Skip to content

feat(mobile): add April INT8 Pocket TTS - #3290

Draft
johnmatthewtennant wants to merge 2 commits into
jtennant/buzz-voice-mobile-linking-aprilfrom
jtennant/mobile-pocket-tts
Draft

feat(mobile): add April INT8 Pocket TTS#3290
johnmatthewtennant wants to merge 2 commits into
jtennant/buzz-voice-mobile-linking-aprilfrom
jtennant/mobile-pocket-tts

Conversation

@johnmatthewtennant

@johnmatthewtennant johnmatthewtennant commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Context

Buzz mobile did not have an offline, on-device voice path. This adds Pocket TTS using the canonical April runtime from #3361 and fixes the mobile model contract to the April INT8 artifact set.

What changed

  • Add a minimal mobile C ABI over the canonical Pocket TTS runtime, with a warm engine, engine-aware text chunking, explicit cancellation reset, and sticky cancellation.
  • Share text preparation and PCM shaping between desktop and mobile while preserving the runtime's model-aware chunk boundaries.
  • Download and validate the fixed April INT8 model set (165,890,159 bytes total) into a versioned cache.
  • Add iOS audio-session handling and Android audio-focus/playback handling, including native playback-started events.
  • Add the Flutter isolate worker, controller, conversation button, settings state, cancellation behavior, and no-repeat/excluded-channel safeguards.
  • Build the native archive from the official sherpa-onnx artifacts; the Android child build installs missing Rust targets before compilation.

The branch intentionally contains no FP32 or multi-precision selection path, no duplicate sherpa extraction/package/sys layer, and no bundled model or native binary.

Validation

  • cargo fmt --all -- --check
  • cargo clippy -p buzz-voice --all-targets -- -D warnings
  • cargo clippy -p buzz-voice-mobile --all-targets -- -D warnings
  • cargo test -p buzz-voice --lib (35 passed, 4 ignored)
  • cargo test -p buzz-voice-mobile --lib with the canonical sherpa archive (2 passed)
  • cargo check --manifest-path desktop/src-tauri/Cargo.toml
  • just mobile-check
  • just mobile-test (896 passed, 1 skipped)
  • Targeted Pocket voice Flutter tests (74 passed)
  • iOS device and simulator native archives built; required C ABI symbols verified
  • Android arm64 and x86_64 native libraries built
  • :app:testDebugUnitTest passed with Java 21

Review notes

  • The model manifest is pinned to upstream revision 58a6d00cf13d239b6748cb0769f35c580a8f606c, precision int8, and total download size 165890159.
  • The settings golden now reports the fixed download as 165 MB.
  • This remains a draft while hardware integration coverage and reviewer feedback are completed.

johnmatthewtennant added a commit that referenced this pull request Jul 28, 2026
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/mobile-pocket-tts branch from 199f931 to c0e3080 Compare July 28, 2026 13:17
@johnmatthewtennant
johnmatthewtennant changed the base branch from jt/buzz-voice-refactor to jtennant/pocket-tts-april-runtime July 28, 2026 13:18
johnmatthewtennant added a commit that referenced this pull request Jul 28, 2026
johnmatthewtennant added a commit that referenced this pull request Jul 28, 2026
@johnmatthewtennant

Copy link
Copy Markdown
Contributor Author

🤖 ### Pocket Voice settings

The mobile settings surface now describes the April 2026 on-device model and its approximately 440 MB post-install download.

pocket_voice_settings

@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/pocket-tts-april-runtime branch from 2e67663 to 394b4b4 Compare July 28, 2026 13:52
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/mobile-pocket-tts branch from c0e3080 to e4ec043 Compare July 28, 2026 14:03
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/pocket-tts-april-runtime branch from 394b4b4 to d9193ad Compare July 28, 2026 14:34
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/mobile-pocket-tts branch from e4ec043 to 4691cad Compare July 28, 2026 14:38
@johnmatthewtennant johnmatthewtennant changed the title feat(mobile): add on-device Pocket TTS feat(mobile): add April INT8 Pocket TTS Jul 28, 2026
@johnmatthewtennant
johnmatthewtennant changed the base branch from jtennant/pocket-tts-april-runtime to jtennant/buzz-voice-mobile-linking-april July 28, 2026 19:58
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/mobile-pocket-tts branch from 4691cad to 6b1e6f1 Compare July 28, 2026 20:06
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/buzz-voice-mobile-linking-april branch from df2b7d9 to 5514cb2 Compare July 28, 2026 21:00
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/mobile-pocket-tts branch from 6b1e6f1 to 85d3a3a Compare July 28, 2026 21:11
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/buzz-voice-mobile-linking-april branch 2 times, most recently from 19ea0ad to b1c899f Compare July 29, 2026 00:16
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/mobile-pocket-tts branch from 85d3a3a to afbb8ce Compare July 29, 2026 00:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant